package com.zimmur.dao.order;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zimmur.model.order.Order;
import com.zimmur.model.order.view.OrderParameter;
/**
 * 订单Dao
 * @author Administrator
 *
 */
public interface IOrderDao {

    int deleteByPrimaryKey(Long orderid);

    int insertSelective(Order record);

    Order selectByPrimaryKey(Long orderid);

    int updateByPrimaryKeySelective(Order record);
    
    int updateOrderStatusByPayForOrderId(Map<String, Object> map);
    
    int updateOrderStatusByOrderId(Map<String, Object> map);
    /**
     * 根据订单状态查询我的订单
     * @param orderParameter
     * @return
     */
    List<Order> selectByOrderStatusList(OrderParameter orderParameter);
    
    int selectByOrderStatusCount(OrderParameter orderParameter);
    /**
     * 超过2小时未支付订单
     * @param outUnixTime 超时时间
     * @return
     */
    List<Order> selectListByTimeOut(@Param("outUnixTime")Integer outUnixTime);
    /**
     * 超过2小时未支付订单,自动取消
     * @param createDate
     * @return
     */
    int updateOrderStatusByOutTime(@Param("orderId")long orderId);
    /**
     * 通过订单状态和闪创商品状态  查询  闪创订单
     * @param orderParameter
     * @return
     */
    List<Order> selectOrganizationOrder(OrderParameter orderParameter);
    /**
     * 通过订单状态和闪创商品状态  查询  闪创订单数量
     * @param orderParameter
     * @return
     */
    int countOrganizationOrder(OrderParameter orderParameter);
   /**
    * 通过商品Id和订单状态  查询订单
    * @param goodsId
    * @param orderStatus
    * @return
    */
    List<Order> selectOrganizationOrderByGoodsId(@Param("goodsId")long goodsId,@Param("orderStatus")String orderStatus);
    /**
     * 通过订单Id批量修改订单
     * @param orderStatus
     * @param orderStatucsText
     * @param orderIds
     * @return
     */
    int updateOrderByOrderIds(@Param("orderStatus")String orderStatus,@Param("orderStatusText")String orderStatusText,@Param("orderIds")List<Long> orderIds);
    /**
     * 分页 查询
     * 查询闪创订单的已退款订单和售后订单
     * 参数：userId，pageBeginNo，pageSize
     * @param orderParameter
     * @return
     */
    List<Long> selectServiceOrderIDByParam(OrderParameter orderParameter);
    /**
     * 统计总数
     * 查询闪创订单的已退款订单和售后订单
     * 参数：userId
     * @param orderParameter
     * @return
     */
    int countServiceOrderIDByParam(OrderParameter orderParameter);
    /**
     * 查询发货时间小于time的订单
     * @param time
     * @return
     */
    List<Order> selectOrderByshipDate(Integer time);
}